home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DJGPP / BNU22SR1.ZIP / src / binutils.2 / bfd / elf32-hp.h < prev    next >
C/C++ Source or Header  |  1993-05-30  |  15KB  |  391 lines

  1. /* ELF32/HPPA relocation support
  2.  
  3.     This file contains ELF32/HPPA relocation support as specified
  4.     in the Stratus FTX/Golf Object File Format (SED-1762) dated
  5.     November 19, 1992.
  6. */
  7.  
  8.  
  9. /*
  10.     Copyright (C) 1990-1991 Free Software Foundation, Inc.
  11.  
  12.     Written by:
  13.     
  14.     Center for Software Science
  15.     Department of Computer Science
  16.     University of Utah
  17.  
  18. This file is part of BFD, the Binary File Descriptor library.
  19.  
  20. This program is free software; you can redistribute it and/or modify
  21. it under the terms of the GNU General Public License as published by
  22. the Free Software Foundation; either version 2 of the License, or
  23. (at your option) any later version.
  24.  
  25. This program is distributed in the hope that it will be useful,
  26. but WITHOUT ANY WARRANTY; without even the implied warranty of
  27. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  28. GNU General Public License for more details.
  29.  
  30. You should have received a copy of the GNU General Public License
  31. along with this program; if not, write to the Free Software
  32. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  33.  
  34. #ifndef _ELF32_HPPA_H
  35. #define _ELF32_HPPA_H
  36.  
  37. /* 9.3.3. Parameter relocation information    */
  38.   
  39. /* As mentioned previously, relocations of calls must be accompanied    */
  40. /* by parameter relocation information, indicating which registers the    */
  41. /* first for parameter words, and the return value, are located in.    */
  42. /* This information accompanies the R_HPPA_ABS_CALL..,            */
  43. /* R_HPPA_PCREL_CALL...  and R_HPPA_PUSH_PROC relocation types,        */
  44. /* described below.  The information is kept in the high-order 10 bits    */
  45. /* of Elf32_rela.r_addend, while the low-order 22 bits are a signed    */
  46. /* constant to be used in calculating the call target.  The following    */
  47. /* macros are used to extract and combine these data in r_addend.    */
  48.        
  49. #define ELF32_HPPA_R_ARG_RELOC(a)    (((a) >> 22) & 0x3FF)
  50. #define ELF32_HPPA_R_CONSTANT(a)    ((((Elf_Sword)(a)) << 10) >> 10)
  51. #define ELF32_HPPA_R_ADDEND(r,c)    (((r) << 22) + ((c) & 0x3FFFFF))
  52.  
  53. /* ELF/HPPA relocation types */
  54.  
  55. /*    name                         expression           format    */
  56. /*    --------------------------------------------------------------    */
  57. typedef enum {
  58.     /* 9.3.4. Address relocation types */
  59.   
  60.     /* These relocation types do simple base+offset relocations, and are */
  61.     /* normally used for absolute references to data. */
  62.   
  63.     /* By convention, relocation type zero is always "no relocation", */
  64.     /* while type one is 32-bit word relocation. */
  65.  
  66.     R_HPPA_NONE,    /*        -            -    */
  67.  
  68.     R_HPPA_32,    /*        Symbol + Addend        32    */
  69.     R_HPPA_11,    /*        Symbol + Addend        11    */
  70.     R_HPPA_14,    /*        Symbol + Addend        11    */
  71.     R_HPPA_17,    /*        Symbol + Addend        11    */
  72.     R_HPPA_L21,    /*        L (Symbol, Addend)    21     */
  73.     R_HPPA_R11,    /*        R (Symbol, Addend)    11     */
  74.     R_HPPA_R14,    /*        R (Symbol, Addend)    14    */
  75.     R_HPPA_R17,    /*        R (Symbol, Addend)    17     */
  76.     R_HPPA_LS21,    /*        LS(Symbol, Addend)    21    */
  77.     R_HPPA_RS11,    /*        RS(Symbol, Addend)    11    */
  78.     R_HPPA_RS14,    /*        RS(Symbol, Addend)    14    */
  79.     R_HPPA_RS17,    /*        RS(Symbol, Addend)    17    */
  80.     R_HPPA_LD21,    /*        LD(Symbol, Addend)    21    */
  81.     R_HPPA_RD11,    /*        RD(Symbol, Addend)    11    */
  82.     R_HPPA_RD14,    /*        RD(Symbol, Addend)    14    */
  83.     R_HPPA_RD17,    /*        RD(Symbol, Addend)    17    */
  84.     R_HPPA_LR21,    /*        LR(Symbol, Addend)    21    */
  85.     R_HPPA_RR14,    /*        RR(Symbol, Addend)    14    */
  86.     R_HPPA_RR17,    /*        RR(Symbol, Addend)    17    */
  87.  
  88.     /* 9.3.5. GOTOFF address relocation types        */
  89.  
  90.     /* The Global Offset Table (GOT) is a table of pointers to data, but */
  91.         /* its address can also be used as a base pointer to address data, */
  92.     /* similar to the way the DP is used in HP/UX.  The expression */
  93.     /* calculation yields a signed offset of an address from the GOT. */
  94.  
  95.     R_HPPA_GOTOFF_11,    /*    Symbol - GOT + Addend    11    */
  96.     R_HPPA_GOTOFF_14,    /*    Symbol - GOT + Addend    14    */
  97.     R_HPPA_GOTOFF_L21,    /*    L (Sym - GOT, Addend)    21    */
  98.     R_HPPA_GOTOFF_R11,    /*    R (Sym - GOT, Addend)    11    */
  99.     R_HPPA_GOTOFF_R14,    /*    R (Sym - GOT, Addend)    14    */
  100.     R_HPPA_GOTOFF_LS21,    /*    LS(Sym - GOT, Addend)    21    */
  101.     R_HPPA_GOTOFF_RS11,    /*    RS(Sym - GOT, Addend)    11    */
  102.     R_HPPA_GOTOFF_RS14,    /*    RS(Sym - GOT, Addend)    14    */
  103.     R_HPPA_GOTOFF_LD21,    /*    LD(Sym - GOT, Addend)    21    */
  104.     R_HPPA_GOTOFF_RD11,    /*    RD(Sym - GOT, Addend)    11    */
  105.     R_HPPA_GOTOFF_RD14,    /*    RD(Sym - GOT, Addend)    14    */
  106.     R_HPPA_GOTOFF_LR21,    /*    LR(Sym - GOT, Addend)    21    */
  107.     R_HPPA_GOTOFF_RR14,    /*    RR(Sym - GOT, Addend)    14    */
  108.  
  109.     /* 9.3.6. Absolute call relocation types    */
  110.  
  111.     /* Relocations of function calls must be accompanied by parameter */
  112.     /* relocation information.  This information is carried in the ten */
  113.     /* high-order bits of the addend field.  The remaining 22 bits of */
  114.     /* of the addend field are sign-extended to form the Addend. */
  115.  
  116.     R_HPPA_ABS_CALL_11,    /*    Symbol + Addend        11    */
  117.     R_HPPA_ABS_CALL_14,    /*    Symbol + Addend        14    */
  118.     R_HPPA_ABS_CALL_17,    /*    Symbol + Addend        17    */
  119.     R_HPPA_ABS_CALL_L21,    /*    L (Symbol, Addend)    21     */
  120.     R_HPPA_ABS_CALL_R11,    /*    R (Symbol, Addend)    11     */
  121.     R_HPPA_ABS_CALL_R14,    /*    R (Symbol, Addend)    14    */
  122.     R_HPPA_ABS_CALL_R17,    /*    R (Symbol, Addend)    17     */
  123.     R_HPPA_ABS_CALL_LS21,    /*    LS(Symbol, Addend)    21    */
  124.     R_HPPA_ABS_CALL_RS11,    /*    RS(Symbol, Addend)    11    */
  125.     R_HPPA_ABS_CALL_RS14,    /*    RS(Symbol, Addend)    14    */
  126.     R_HPPA_ABS_CALL_RS17,    /*    RS(Symbol, Addend)    17    */
  127.     R_HPPA_ABS_CALL_LD21,    /*    LD(Symbol, Addend)    21    */
  128.     R_HPPA_ABS_CALL_RD11,    /*    RD(Symbol, Addend)    11    */
  129.     R_HPPA_ABS_CALL_RD14,    /*    RD(Symbol, Addend)    14    */
  130.     R_HPPA_ABS_CALL_RD17,    /*    RD(Symbol, Addend)    17    */
  131.     R_HPPA_ABS_CALL_LR21,    /*    LR(Symbol, Addend)    21    */
  132.     R_HPPA_ABS_CALL_RR14,    /*    RR(Symbol, Addend)    14    */
  133.     R_HPPA_ABS_CALL_RR17,    /*    RR(Symbol, Addend)    17    */
  134.  
  135.     /* 9.3.7. PC-relative call relocation types    */
  136.  
  137.     /* PC-relative relocation calculates the difference between an address */
  138.     /* and the location being relocated.  This is most often used to */
  139.     /* relocate pc-relative calls.    */
  140.  
  141.     /* As with the ABS_CALL relocation types, the ten high-order bits of */
  142.     /* the addend field carry parameter relocation information, while */
  143.     /* the low-order 22 bits are sign-extended to form the Addend.    */
  144.  
  145.     R_HPPA_PCREL_CALL_11,    /*    Symbol - PC + Addend    11    */
  146.     R_HPPA_PCREL_CALL_14,    /*    Symbol - PC + Addend    14    */
  147.     R_HPPA_PCREL_CALL_17,    /*    Symbol - PC + Addend    17    */
  148.     R_HPPA_PCREL_CALL_L21,    /*    L (Symbol - PC, Addend)    21     */
  149.     R_HPPA_PCREL_CALL_R11,    /*    R (Symbol - PC, Addend)    11     */
  150.     R_HPPA_PCREL_CALL_R14,    /*    R (Symbol - PC, Addend)    14    */
  151.     R_HPPA_PCREL_CALL_R17,    /*    R (Symbol - PC, Addend)    17     */
  152.     R_HPPA_PCREL_CALL_LS21,    /*    LS(Symbol - PC, Addend)    21    */
  153.     R_HPPA_PCREL_CALL_RS11,    /*    RS(Symbol - PC, Addend)    11    */
  154.     R_HPPA_PCREL_CALL_RS14,    /*    RS(Symbol - PC, Addend)    14    */
  155.     R_HPPA_PCREL_CALL_RS17,    /*    RS(Symbol - PC, Addend)    17    */
  156.     R_HPPA_PCREL_CALL_LD21,    /*    LD(Symbol - PC, Addend)    21    */
  157.     R_HPPA_PCREL_CALL_RD11,    /*    RD(Symbol - PC, Addend)    11    */
  158.     R_HPPA_PCREL_CALL_RD14,    /*    RD(Symbol - PC, Addend)    14    */
  159.     R_HPPA_PCREL_CALL_RD17,    /*    RD(Symbol - PC, Addend)    17    */
  160.     R_HPPA_PCREL_CALL_LR21,    /*    LR(Symbol - PC, Addend)    21    */
  161.     R_HPPA_PCREL_CALL_RR14,    /*    RR(Symbol - PC, Addend)    14    */
  162.     R_HPPA_PCREL_CALL_RR17,    /*    RR(Symbol - PC, Addend)    17    */ /* #69 */
  163.  
  164.     /* 9.3.8. Plabel relocation types */
  165.  
  166.     /* Plabels are designed to allow code pointers to be passed between */
  167.     /* spaces.  The addend of the relocation should be either 0 (no static */
  168.         /* link) or 2 (static link required).  These relocations correspond to */
  169.     /* the P%, LP% and RP% field selectors.  [Description is incomplete] */
  170.   
  171.     R_HPPA_PLABEL_32,    /*    F(Plabel(Symbol,Addend),0)    32    */
  172.     R_HPPA_PLABEL_11,    /*    F(Plabel(Symbol,Addend),0)    11    */
  173.     R_HPPA_PLABEL_14,    /*    F(Plabel(Symbol,Addend),0)    14    */
  174.     R_HPPA_PLABEL_L21,    /*    L(Plabel(Symbol,Addend),0)    21    */
  175.     R_HPPA_PLABEL_R11,    /*    R(Plabel(Symbol,Addend),0)    11    */
  176.     R_HPPA_PLABEL_R14,    /*    R(Plabel(Symbol,Addend),0)    14    */
  177.  
  178.     /* 9.3.9. Data linkage table (DLT) relocation types    */
  179.  
  180.     /* SOM DLT_REL fixup requests are used to for static data references    */
  181.     /* from position-independent code within shared libraries.  They are    */
  182.     /* similar to the GOT relocation types in some SVR4 implementations.    */
  183.     /* [Prose to come]    */
  184.  
  185.     R_HPPA_DLT_32,        /*    F(DLTOFF)            32    */
  186.     R_HPPA_DLT_11,        /*    F(DLTOFF)            11    */
  187.     R_HPPA_DLT_14,        /*    F(DLTOFF)            14    */
  188.     R_HPPA_DLT_L21,        /*    L(DLTOFF)            21    */
  189.     R_HPPA_DLT_R11,        /*    R(DLTOFF)            11    */
  190.     R_HPPA_DLT_R14,        /*    R(DLTOFF)            14    */
  191.  
  192.     /* 9.3.10. Relocations for unwinder tables    */
  193.   
  194.     /* As described above, the unwinder table consists of a series of    */
  195.     /* four-word entries, the first two of which are a pair of code    */
  196.     /* addresses.  While it would be possible to relocate this table using    */
  197.     /* just R_HPPA_32, the amount of relocation data resulting would be    */
  198.     /* very large.  To reduce that data, the following relocation types    */
  199.     /* have been defined.    */
  200.  
  201.     /* The first, R_HPPA_UNWIND_ENTRY, merely compresses two R_HPPA_32    */
  202.     /* operations into one.  It is designed for use in .rel-type    */
  203.     /* relocations, where the two 32-bit addends are taken from the unwind    */
  204.     /* section itself.    */
  205.  
  206.     /* The second, which is designed for use in .rela-type relocations, is    */
  207.     /* designed to relocate an entire unwinder table with one relocation    */
  208.     /* entry.  It has the effect of multiple R_HPPA_UNWIND_ENTRY    */
  209.     /* relocations applied to successive unwinder table entries.  The    */
  210.     /* number of entries to be relocated is given in the r_addend field of    */
  211.     /* the relocation entry.  The rest of the relocation entry is used in    */
  212.     /* a normal way--r_offset is the offset of the first unwind entry in    */
  213.     /* the section, while ELF32_R_SYM(r_info) is the code section that all    */
  214.     /* the code addresses should be relocated from.    */
  215.  
  216.     R_HPPA_UNWIND_ENTRY,    /*                    "128"    */
  217.     R_HPPA_UNWIND_ENTRIES,    /*                Addend * "128"    */
  218.     
  219.     /*  9.3.11. Relocation types for complex expressions    */
  220.  
  221.     /* As described above, new-format SOM fixups support complex */
  222.     /* expressions by spreading the parts of the expression across */
  223.     /* multiple entries.  ELF for HPPA will have a similar mechanism, */
  224.     /* although support for it may be optional.  There are two main */
  225.     /* reasons for defining it:  first, the need to translate complex */
  226.     /* SOM fixup expressions to ELF, and second, to cover combinations */
  227.     /* of expression, field and format not available with other */
  228.     /* relocation types. */
  229.  
  230.     /* ELF expression relocation entries are interpreted as postfix-form */
  231.     /* expressions.  They may be evaluated using a push-down stack. */
  232.  
  233.     /* Usually, the addend field of these expression relocation entries is */
  234.     /* unused, with the following exceptions: */
  235.  
  236.     /* R_HPPA_PUSH_CONST: The addend field contains the constant. */
  237.  
  238.     /* R_HPPA_PUSH_PROC: The high-order 10 bits of the addend field */
  239.     /* contain parameter relocation information.  The rest of */
  240.     /* the addend field is unused. */
  241.  
  242.     /* R_HPPA_LSHIFT, R_HPPA_ARITH_RSHIFT and R_HPPA_LOGIC_RSHIFT: */
  243.     /* The addend field normally gives the amount to shift. */
  244.     /* However, if that amount is zero, the shift amount is */
  245.     /* popped from the top of the stack prior to popping the */
  246.     /* amount to be shifted. */
  247.  
  248.     /*    name            expression            fld/fmt */
  249.     /* -------------------------------------------------------------------    */
  250.     R_HPPA_PUSH_CONST = 128,/*    push Addend            -   -    */
  251.     R_HPPA_PUSH_SYM,    /*    push Symbol            -   -    */
  252.     R_HPPA_PUSH_GOT,    /*    push GOT            -   -    */
  253.     R_HPPA_PUSH_PC,        /*    push PC                -   -    */
  254.     R_HPPA_PUSH_PROC,    /*    push Symbol            -   -    */
  255.     R_HPPA_PUSH_PLABEL,    /*    push Plabel(Symbol)        -   -    */
  256.     R_HPPA_MAX,        /*    pop A and B, push max(B,A)    -   -    */
  257.     R_HPPA_MIN,        /*    pop A and B, push min(B,A)    -   -    */
  258.     R_HPPA_ADD,        /*    pop A and B, push B + A        -   -    */
  259.     R_HPPA_SUB,        /*    pop A and B, push B - A        -   -    */
  260.     R_HPPA_MULT,        /*    pop A and B, push B * A        -   -    */
  261.     R_HPPA_DIV,        /*    pop A and B, push B / A        -   -    */
  262.     R_HPPA_MOD,        /*    pop A and B, push B % A        -   -    */
  263.     R_HPPA_AND,        /*    pop A and B, push B & A        -   -    */
  264.     R_HPPA_OR,        /*    pop A and B, push B | A        -   -    */
  265.     R_HPPA_XOR,        /*    pop A and B, push B ^ A        -   -    */
  266.     R_HPPA_NOT,        /*    pop A, push ~A            -   -    */
  267.     R_HPPA_LSHIFT,        /*    pop A, push A << Addend        -   -    */
  268.     R_HPPA_ARITH_RSHIFT,    /*    pop A, push A >> Addend        -   -    */
  269.     R_HPPA_LOGIC_RSHIFT,    /*    pop A, push A >> Addend        -   -    */
  270.     R_HPPA_EXPR_F,        /*    pop A, push A + Addend        F   -    */
  271.     R_HPPA_EXPR_L,        /*    pop A, push L(A,Addend)        L   -    */
  272.     R_HPPA_EXPR_R,        /*    pop A, push R(A,Addend)        R   -    */
  273.     R_HPPA_EXPR_LS,        /*    pop A, push LS(A,Addend)    LS  -    */
  274.     R_HPPA_EXPR_RS,        /*    pop A, push RS(A,Addend)    RS  -    */
  275.     R_HPPA_EXPR_LD,        /*    pop A, push LD(A,Addend)    LD  -    */
  276.     R_HPPA_EXPR_RD,        /*    pop A, push RD(A,Addend)    RD  -    */
  277.     R_HPPA_EXPR_LR,        /*    pop A, push LR(A,Addend)    LR  -    */
  278.     R_HPPA_EXPR_RR,        /*    pop A, push RR(A,Addend)    RR  -    */
  279.  
  280.     R_HPPA_EXPR_32,        /*    pop                -   32    */
  281.     R_HPPA_EXPR_21,        /*    pop                -   21    */
  282.     R_HPPA_EXPR_11,        /*    pop                -   11    */
  283.     R_HPPA_EXPR_14,        /*    pop                -   14    */
  284.     R_HPPA_EXPR_17,        /*    pop                -   17    */
  285.     R_HPPA_EXPR_12,        /*    pop                -   12    */
  286.     R_HPPA_UNIMPLEMENTED    /*    N/A                    */
  287.     } elf32_hppa_reloc_type;
  288.  
  289. #define ELF_HOWTO_TABLE_SIZE    R_HPPA_UNIMPLEMENTED + 1
  290. #define N_HPPA_RELOCS        R_HPPA_UNIMPLEMENTED + 1
  291.  
  292. /* Groups of relocations.  Serves as an expression type. */
  293.  
  294. #define    R_HPPA            R_HPPA_32
  295. #define    R_HPPA_GOTOFF        R_HPPA_GOTOFF_11
  296. #define    R_HPPA_ABS_CALL        R_HPPA_ABS_CALL_11
  297. #define    R_HPPA_PCREL_CALL    R_HPPA_PCREL_CALL_11
  298. #define    R_HPPA_PLABEL        R_HPPA_PLABEL_32
  299. #define    R_HPPA_DLT        R_HPPA_DLT_32
  300. #define R_HPPA_UNWIND        R_HPPA_UNWIND_ENTRY
  301. #define    R_HPPA_EXTENDED        R_HPPA_PUSH_CONST
  302.  
  303.  
  304. enum hppa_reloc_field_selector_type
  305. {
  306.     R_HPPA_FSEL    = 0x0,
  307.     R_HPPA_LSSEL    = 0x1,
  308.     R_HPPA_RSSEL    = 0x2,
  309.     R_HPPA_LSEL    = 0x3,
  310.     R_HPPA_RSEL    = 0x4,
  311.     R_HPPA_LDSEL    = 0x5,
  312.     R_HPPA_RDSEL    = 0x6,
  313.     R_HPPA_LRSEL    = 0x7,
  314.     R_HPPA_RRSEL    = 0x8,
  315.     R_HPPA_PSEL    = 0x9,    /* P'    : procedure address for shlib's    */
  316.     R_HPPA_LPSEL    = 0xa,    /* LP'    : L' for procedure addresses    */
  317.     R_HPPA_RPSEL    = 0xb,    /* RP'    : R' for procedure addresses    */
  318.  
  319.     R_HPPA_TSEL    = 0xc,    /* T'    : DLT-relative offset for shlib's    */
  320.     R_HPPA_LTSEL    = 0xd,    /* LT'    : L' for DLT-relative offsets    */
  321.     R_HPPA_RTSEL    = 0xe    /* RT'    : R' for DLT-relative offsets    */
  322.  
  323. };
  324.  
  325. #define N_HPPA_FIELD_SELECTORS 15
  326.  
  327. /* for compatibility */
  328. enum hppa_reloc_field_selector_type_alt
  329. {
  330.     e_fsel    = R_HPPA_FSEL,
  331.     e_lssel    = R_HPPA_LSSEL,
  332.     e_rssel    = R_HPPA_RSSEL,
  333.     e_lsel    = R_HPPA_LSEL,
  334.     e_rsel    = R_HPPA_RSEL,
  335.     e_ldsel    = R_HPPA_LDSEL,
  336.     e_rdsel    = R_HPPA_RDSEL,
  337.     e_lrsel    = R_HPPA_LRSEL,
  338.     e_rrsel    = R_HPPA_RRSEL,
  339.     e_psel    = R_HPPA_PSEL,    /* P'    : procedure address for shlib's    */
  340.     e_lpsel    = R_HPPA_LPSEL,    /* LP'    : L' for procedure addresses    */
  341.     e_rpsel    = R_HPPA_RPSEL,    /* RP'    : R' for procedure addresses    */
  342.  
  343.     e_tsel    = R_HPPA_TSEL,    /* T'    : DLT-relative offset for shlib's    */
  344.     e_ltsel    = R_HPPA_LTSEL,    /* LT'    : L' for DLT-relative offsets    */
  345.     e_rtsel    = R_HPPA_RTSEL    /* RT'    : R' for DLT-relative offsets    */
  346. };
  347.  
  348. /* PA-RISC OPCODES */
  349.  
  350. #define get_opcode(insn)    ((insn) & 0xfc000000) >> 26
  351.  
  352. /* XXX: this list is incomplete */
  353.  
  354. #define LDO    0x0d
  355. #define LDB    0x10
  356. #define LDH    0x11
  357. #define LDW    0x12
  358. #define LDWM    0x13
  359. #define STB    0x18
  360. #define STH    0x19
  361. #define STW    0x1a
  362. #define STWM    0x1b
  363. #define COMICLR    0x24
  364. #define SUBI    0x25
  365. #define SUBIO    0x25
  366. #define ADDIT    0x2c
  367. #define ADDITO    0x2c
  368. #define ADDI    0x2d
  369. #define ADDIO    0x2d
  370. #define LDIL    0x08
  371. #define ADDIL    0x0a
  372.  
  373. #define MOVB    0x32
  374. #define MOVIB    0x33
  375. #define COMBT    0x20
  376. #define COMBF    0x22
  377. #define COMIBT    0x21
  378. #define COMIBF    0x23
  379. #define ADDBT    0x28
  380. #define ADDBF    0x2a
  381. #define ADDIBT    0x29
  382. #define ADDIBF    0x2b
  383. #define BVB    0x30
  384. #define BB    0x31
  385.  
  386. #define BL    0x3a
  387. #define BLE    0x39
  388. #define BE    0x38
  389.  
  390. #endif /* _ELF32_HPPA_H */
  391.